SCSS是個能用更有效率的方法來編寫CSS的程式語言
語法跟CSS大同小異,但是比CSS來得好寫且更容易閱讀
個人覺得這兩者最明顯的差異在於
SCSS用大括號跟分號來區分段落
SASS則是使用排縮跟斷行來區分
兩者並沒有好壞之分,只有使用的順不順手而已
像我先用過SASS之後在使用SCSS就回不去了…
兩者都使用過後覺得SCSS比較順手,因為SCSS更貼近原本在寫的CSS
(不使用SASS的主要原因是因為他的縮排真的太刁了⋯⋯)
愛上SCSS的主要功能之一,這個功能可以大幅減少編寫重複的開頭
透過巢狀式的結構也可以清楚的知道元素上下層的關聯性。
.box{
width: 100%;
margin: 0 auto;
.title{
padding: 10px;
p{
color: rgba(255, 0, 0, 1);;
}
}
}
編譯成CSS就會變成
.box{
width: 100%;
margin: 0 auto;
}
.box .title{
padding: 10px;
}
.box .title p{
color: rgba(255, 0, 0, 1);;
}
這個功能也可以使用在相同的屬性上面
p{
font:{
family: arial, sans-serif;
size: 10px;
decoration: none;
}
}
編譯後
=====>
p{
font-family: arial, sans-serif;
font-size: 10px;
font-decoration: none;
}
還有一個方便的功能是使用 & 符號來代替父層
.box{
color: rgba(0, 0, 0, 1);
&:hover{
color: red;
}
}
編譯後
=====>
.box{
color: rgba(0, 0, 0, 1);
}
.box:hover{
color: rgba(255, 0, 0, 1);
}
$ 來表示變數
變數可以用來儲存值,方便重複利用
$box-shadow: 10px 10px 5px rgba(0, 0, 0, 1);
.box{
box-shadow: $box-shadow;
}
編譯後
=====>
.box{
box-shadow: 10px 10px 5px rgba(0, 0, 0, 1);
}
變數也能拿來做運算
$num:5px;
.container{
margin:$num*2 $num;
}
編譯後
=====>
.container{
margin: 10px 5px;
}
函式可以使用在重複多行的樣式上面,像是CSS的一些新屬性就可能需要加上瀏覽器前綴,這個部分就可以透過函式來完成
要特別注意的是@mixin需要配合@include來使用
@mixin來設定要使用的樣式、@include則是套用樣式
@mixin css3-border-radius() {
-ms-border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
border-radius: 5px;
}
.box {
@include css3-border-radius();
}
編譯後
=====>
.box {
-ms-border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
border-radius: 5px;
}
函式也可以搭配參數使用讓使用上更加靈活。
@mixin css3-border-radius($i) {
-ms-border-radius: $i;
-moz-border-radius: $i;
-webkit-border-radius: $i;
-o-border-radius: $i;
border-radius: $i;
}
.box {
@include css3-border-radius(3px);
}
編譯後
=====>
.box {
-ms-border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
-o-border-radius: 3px;
border-radius: 3px;
}
在檔案中加入其他SCSS或CSS檔案,最後編譯時會一併編譯。
假如我想在某個SCSS檔案裡面匯入head、main、footer等scss的檔案就可以使用下面這段程式碼
@import "head.scss";
@import "main.scss";
@import "footer.scss"
@extend主要是用在合併相同程式碼,假如有很多段相同的程式碼
就可以使用@extend進行合併
只要加上站位符號 % 就能讓被繼承的CSS類消失
%box {
border: 1px solid rgba(0, 0, 0, 1);
padding: 10px;
color: rgba(0, 0, 0, 1);
}
.success {
@extend %box;
border-color: rbga(0, 128, 0, 1);
}
.danger {
@extend %box;
border-color: rgba(255, 0, 0, 1);
}
編譯後
=====>
.success, .danger{
border: 1px solid black;
padding: 10px;
color: black;
}
.success{
border-color: rgba(0, 128, 0, 1);
}
.danger{
border-color: rgba(255, 0, 0, 1);
}
SCSS中也有@function可以使用,像是@if、@for
不過我還不太熟這些...
有興趣的朋友可以查看內建函式的清單
只要在程式碼開頭加上兩條斜線//就可以加入註解。
//我是註解
您好~剛好最近自己開始在學Scss
有一個問題想請教~
要如何在html裡面引用自己寫好的scss檔案呢~?
<head>
<link rel="stylesheet" href="scss/test.scss">
</head>
像跟引用css一樣嗎?
引用的話要先把SCSS轉譯成CSS才可以用
網頁只看得懂CSS
那想問一下~要怎麼轉譯呢?
透過線上網站還是要下載工具~?
一開始想玩玩看的話 可以去SASS的官方網站上面下載編譯器
http://sass-lang.com/install
想做練習的話我覺得這個網站也蠻好玩的
https://www.sassmeister.com/
他是線上即時編譯的網頁,可以即時的把SASS跟SCSS轉譯成CSS
熟悉之後可以去找找看自動編譯~!
好的~了解了!!
感謝您哦!!
不會,一起加油!ヽ(✿゚▽゚)ノ